package com.alb.core.request;

import io.netty.handler.codec.http.cookie.Cookie;
import org.asynchttpclient.Request;

/**
 * @author MattS
 * @Time 2024/04/07
 * @Description 提供可修改的request参数操作接口
 */
public interface IGatewayRequest {
    /**
     * @param host 修改目标服务地址，因为拿到的是一个域名，需要进行格式转换
     */
    void setModifyHost(String host);

    /**
     * @return {@link String} 获取目标服务主机
     */
    String getModifyHost();

    /**
     * @param path
     * 设置目标服务器路径
     */
    void setModifyPath(String path);

    /**
     * @return {@link String}
     * 获取目标服务器路径
     */
    String getModifyPath();

    /**
     * @param name
     * @param value
     * 添加请求头信息
     */
    void addHeader(CharSequence name,String value);

    /**
     * @param name
     * @param value
     * 设置请求头信息
     */
    void setHeader(CharSequence name,String value);

    /**
     * @param name
     * @param value
     * 添加get请求请求头信息
     */
    void addQueryParam(String name,String value);

    /**
     * @param name
     * @param value
     * 添加post请求请求头信息
     */
    void addFormParam(String name,String value);

    /**
     * @param cookie
     * 添加或者替换cookie
     */
    void addOrReplaceCookie(Cookie cookie);

    void addOrReplaceCookie(io.netty.handler.codec.http.Cookie cookie);

    /**
     * @param requestTimeout
     * 设置超时时间
     */
    void setRequestTimeout(int requestTimeout);

    /**
     * 拿到完整的URL
     */
    String getFinalUrl();

    Request build();
}
